htmlspecialchars($row['title'], ENT_QUOTES), 'code' => $row['code'])); // no langs if(count($LANGS) == 0) goto HTML; // parse url $path_sections = array_splice(explode('/', $PATH, 5), 1, -1); // remove last and first empty switch(count($path_sections)){ case 0: // no params $LANG = $LANGS[0]['code']; break; case 1: // lang|params if(mb_substr($path_sections[0], 0, 1) == $PARAM_SYMBOL){ // param $url_params = "{$path_sections[0]}/"; array_splice($path_sections, 0, 1); $LANG = $LANGS[0]['code']; } else{ // lang for($i = 0; $i < count($LANGS); $i++) if($LANGS[$i]['code'] === $path_sections[0]) $LANG = $LANGS[$i]['code']; // lang not exist if(!isset($LANG)){ $LANG = $LANGS[0]['code']; $URL = '404'; } } break; case 2: // lang/[url|params] // lang for($i = 0; $i < count($LANGS); $i++) if($LANGS[$i]['code'] === $path_sections[0]) $LANG = $LANGS[$i]['code']; // lang not exist if(!isset($LANG)){ $LANG = $LANGS[0]['code']; $URL = '404'; } else if(mb_substr($path_sections[1], 0, 1) == $PARAM_SYMBOL){ // param $url_params = "{$path_sections[1]}/"; array_splice($path_sections, 1, 1); } else $URL = htmlspecialchars($path_sections[1], ENT_QUOTES); break; case 3: // lang/url/params // lang for($i = 0; $i < count($LANGS); $i++) if($LANGS[$i]['code'] === $path_sections[0]) $LANG = $LANGS[$i]['code']; // lang not exist if(!isset($LANG)){ $LANG = $LANGS[0]['code']; $URL = '404'; } else if(mb_substr($path_sections[2], 0, 1) == $PARAM_SYMBOL){ // param $URL = htmlspecialchars($path_sections[1], ENT_QUOTES); $url_params = "{$path_sections[2]}/"; array_splice($path_sections, 2, 1); } else $URL = '404'; break; default: // wrong $LANG = $LANGS[0]['code']; $URL = '404'; break; } $PATH = count($path_sections) == 0 ? '/' : '/'.join('/', $path_sections).'/'; // default lang urls for($i = 0; $i < count($LANGS); $i++) $URLS[$LANGS[$i]['code']] = '/'.htmlspecialchars($LANGS[$i]['code'], ENT_QUOTES)."/{$url_params}{$GET_PARAMS}"; // parse url params parse_str(mb_substr($url_params, 1, -1), $GET); // allowed url params if(count(array_diff(array_keys($GET), $ALLOWED_URL_PARAMS)) != 0) $URL = '404'; // currency getCurrency(); // page visible $PAGE_VISIBLE = !isset($_SESSION['user_type']) || $_SESSION['user_type'] == 1; // page $result = $URL ? getPageByUrl($URL) : getMainPage(); if(mysqli_num_rows($result) != 0){ $row_page = mysqli_fetch_assoc($result); // closed pages if(!isset($_SESSION['user_type']) && ($row_page['url'] == 'profile' || $row_page['url'] == 'orders' || $row_page['url'] == 'forms')){ $showLogin = 1; goto PAGE404; } else{ $URL = htmlspecialchars($row_page['url'], ENT_QUOTES); $ID_PAGE = intval($row_page['id']); goto PAGE; } } else goto PAGE404; PAGE404: $URL = '404'; $URLS = array($LANG => $URL); $result = getPageByUrl($URL); if(mysqli_num_rows($result) != 0){ $row_page = mysqli_fetch_assoc($result); $ID_PAGE = intval($row_page['id']); } else goto HTML; PAGE: $SORTING = array("id DESC","rating DESC","CAST(price AS DECIMAL(10,2)) DESC","title DESC","date DESC","id","rating","CAST(price AS DECIMAL(10,2))","title","date"); // wrong sorting if(isset($GET['sort'])){ if((intval($GET['sort']) < 0 || intval($GET['sort']) > 9) && $URL != '404'){ unset($GET['sort']); $update_params = 1; } $row_page['sorting'] = intval($GET['sort']); } // wrong num page if(isset($GET['page']) && intval($GET['page']) < 2 && $URL != '404'){ unset($GET['page']); $update_params = 1; } // wrong items if(isset($GET['items']) && $URL != '404'){ $items = explode(',', $row_page['pagination']); if($row_page['pagination'] == '' || intval($GET['items']) == intval($items[0])){ unset($GET['items']); $update_params = 1; } } // update params if($update_params){ $url_params = urldecode(http_build_query($GET)); if($url_params != '') $url_params = "{$PARAM_SYMBOL}{$url_params}/"; } // redirect main page if(intval($row_page['main']) == 1) switch(count($path_sections)){ case 1: // from /lang/ to / if($LANG === $LANGS[0]['code']) $PATH = '/'; break; case 2: // from /lang/url/ to / OR to /lang/ $PATH = $LANG === $LANGS[0]['code'] ? '/' : "/$LANG/"; break; } // redirect if url changed if($PATH.$url_params.$GET_PARAMS != $_SERVER['REQUEST_URI']){ header('HTTP/1.1 301 Moved Permanently'); header("Location: {$PATH}{$url_params}{$GET_PARAMS}"); exit(); } // filter, param $FILTER = isset($GET['filter']) ? explode(',', str_replace(';', ',', $GET['filter'])) : array(); $PARAM = isset($GET['param']) ? explode(',', $GET['param']) : array(); // check wrong filters if(isset($GET['filter']) && $URL != '404'){ $row = mysqli_fetch_assoc(mysqli_query($db, "SELECT COUNT(DISTINCT params.id) AS num FROM params LEFT JOIN properties ON properties.id = params.id_property WHERE params.id IN (".mysqli_real_escape_string($db, str_replace(';', ',', $GET['filter'])).") AND properties.id_page = '$ID_PAGE' AND properties.filter = 1")); if(intval($row['num']) != count($FILTER)) goto PAGE404; } // check wrong params if(intval($GET['param']) != 0 && $URL != '404'){ $row = mysqli_fetch_assoc(mysqli_query($db, "SELECT COUNT(id_param) AS num FROM pages_params WHERE id_param IN (".mysqli_real_escape_string($db, $GET['param']).") AND id_page = '$ID_PAGE'")); if(intval($row['num']) != count($PARAM)) goto PAGE404; } // header 404 if($URL === '404') header('HTTP/1.0 404 Not Found'); // elements $ELEMENTS = array(); getElements("{$ID_PAGE}, 0, -1"); HTML: // if load page via ajax if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ include_once "templates/{$row_page['template']}-ajax.php"; mysqli_close($db); // close db exit; } ?> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','".htmlspecialchars($GOOGLE_TAG_MANAGER, ENT_QUOTES)."');"; // Google Analytics if($GOOGLE_ANALYTICS != '') echo ' '; // filter exists if(isset($GET['filter'])){ $row_page['text'] = ''; $row_page['meta_keywords'] = ''; $row_page['noindex'] = 1; $row_page['nofollow'] = 1; // from filters $result = mysqli_query($db, "SELECT bigrams FROM filters WHERE filter = '".mysqli_real_escape_string($db, $GET['filter'])."' LIMIT 1"); if(mysqli_num_rows($result) != 0){ $row = mysqli_fetch_assoc($result); $row_page['bigrams'] = $row['bigrams']; $row_page['noindex'] = 0; $row_page['nofollow'] = 0; $row_page = applyFormulasFilter($row_page); $breadcrumbs_active = $row_page['h1']; } // from filter page $result = mysqli_query($db, "SELECT pages_lang.title, pages_lang.h1, pages_lang.description, pages_lang.text, pages_lang.meta_title, pages_lang.meta_description, pages_lang.meta_keywords, pages_lang.meta_author, pages.image, pages.preview, pages.noindex, pages.nofollow FROM pages_lang LEFT JOIN pages ON pages_lang.id_page = pages.id WHERE pages_lang.url = 'filter=".mysqli_real_escape_string($db, $GET['filter'])."' AND pages_lang.lang = '$LANG'".($PAGE_VISIBLE ? ' AND pages.visible = 1' : '')." LIMIT 1"); if(mysqli_num_rows($result) != 0){ $row = mysqli_fetch_assoc($result); foreach($row as $key => $value) if($value !== '') $row_page[$key] = $value; $breadcrumbs_active = $row_page['h1']; } } else $row_page = applyFormulasPage($row_page); // meta title if($row_page['meta_title'] != '') echo ''.htmlspecialchars($row_page['meta_title'], ENT_QUOTES).(intval($GET['page']) < 2 ? '' : $PAGE_PAGINATION[$LANG].intval($GET['page'])).''; // meta description if($row_page['meta_description'] != '' && intval($GET['page']) < 2) echo ''; // meta keywords if($row_page['meta_keywords'] != '' && intval($GET['page']) < 2) echo ''; // meta author if($row_page['meta_author'] != '') echo ''; else if($META_AUTHOR != '') echo ''; // copyright if($META_COPYRIGHT != '') echo ''; // noindex, nofollow if(count(array_intersect(array_keys($GET), $NOINDEX_URL_PARAMS)) != 0){ $row_page['noindex'] = 1; $row_page['nofollow'] = 1; } echo ''; // alternate $result = mysqli_query($db, "SELECT pages_lang.lang, pages_lang.url FROM pages LEFT JOIN pages_lang ON pages.id = pages_lang.id_page WHERE pages_lang.id_page = '$ID_PAGE'".($PAGE_VISIBLE ? " AND pages.visible = 1" : '')." AND pages_lang.url != ''"); while($row = mysqli_fetch_assoc($result)){ if(intval($row_page['main']) == 1){ // main page if($row['lang'] === $LANGS[0]['code']){ // default lang $URLS[$row['lang']] = "/{$url_params}{$GET_PARAMS}"; echo "'; } else{ // not default lang $URLS[$row['lang']] = '/'.htmlspecialchars($row['lang'], ENT_QUOTES)."/{$url_params}{$GET_PARAMS}"; echo "'; } }else{ // not main page $URLS[$row['lang']] = '/'.htmlspecialchars($row['lang'], ENT_QUOTES).'/'.htmlspecialchars($row['url'], ENT_QUOTES)."/{$url_params}{$GET_PARAMS}"; echo "'; } } // alternate default if(intval($row_page['main']) == 1) echo ""; else echo "'; // canonical_params if(intval($GET['page']) > 1 && $GET['filter'] == '') $canonical_params = 'page='.intval($GET['page']); if(intval($GET['sort']) != 0){ if($canonical_params != '') $canonical_params .= '&'; $canonical_params = 'sort='.$GET['sort']; } if(isset($row_filter) && count($FILTER) <= 1){ if($canonical_params != '') $canonical_params .= '&'; $canonical_params .= 'filter='.$GET['filter']; } if($canonical_params != '') $canonical_params = "{$PARAM_SYMBOL}{$canonical_params}/"; // canonical if(intval($row_page['main']) == 1){ // main page if($LANG == $LANGS[0]['code']) echo ""; else echo ""; } else // not main page echo ""; // micro if($MICRO === true) echo ''; // Facebook Analytics if($FACEBOOK_PIXEL != '') echo " "; // Facebook info echo ' '; ?> '; // template include_once "templates/{$row_page['template']}.php"; // close db mysqli_close($db); // alert echo '
'.$alert_error; else if($alert_ok) echo ' class="alert_ok">'.$alert_ok; else if(isset($_SESSION['alert_error'])) echo ' class="alert_error">'.$_SESSION['alert_error']; else if(isset($_SESSION['alert_ok'])) echo ' class="alert_ok">'.$_SESSION['alert_ok']; else echo '>'; echo '
'; unset($_SESSION['alert_ok']); unset($_SESSION['alert_error']); // Google Adwords if($GOOGLE_ADWORDS != '') echo " "; // js echo " "; // modal login if($showLogin) echo ''; // editor if(intval($_SESSION['user_type']) == 2){ include_once 'lang.php'; // LANG_ADMIN $lang_admin = array(); foreach($LANG_ADMIN as $lang => $array){ $lang_admin[$lang] = array(); foreach($array as $text => $value) $lang_admin[$lang][$text] = $value; } echo " "; } include_once 'templates/include/footerjs.php'; // js ?>